package com.fast.alden.portal.service;

import com.fast.alden.common.entity.dto.LoginParam;
import com.fast.alden.common.entity.dto.LoginResult;
import com.fast.alden.common.entity.dto.VerifyCodeEntity;
import com.fast.alden.portal.entity.dto.RegisterParam;
import com.fast.alden.portal.entity.dto.ResetPasswordParam;

import java.io.IOException;

public interface AuthPortalService {
    /**
     * 获取验证码
     */
    VerifyCodeEntity generateVerifyCode() throws IOException;

    /**
     * 验证码校验
     */
    void checkVerifyCode(String verifyCodeKey, String verifyCode);

    /**
     * 用户登录
     */
    LoginResult login(LoginParam param);

    /**
     * 注销登录
     */
    void logout();

    /**
     * 注册
     */
    void register(RegisterParam param);

    /**
     * 忘记密码场景，校验用户名是否存在
     *
     * @param username
     * @return
     */
    boolean checkUsernameBeforeResetPassword(String username);

    /**
     * 忘记密码场景，校验用户名相关主要信息
     *
     * @param param
     * @return
     */
    boolean checkMainInfo(ResetPasswordParam param);

    /**
     * 忘记密码场景，重置密码
     *
     * @param param
     */
    void resetPassword(ResetPasswordParam param);

    /**
     * 检查用户名
     *
     * @return true：校验通过，false：校验不通过
     */
    boolean checkUsername(String username);

    /**
     * 检查手机号
     *
     * @return true：校验通过，false：校验不通过
     */
    boolean checkPhone(String phone);

    /**
     * 检查邮箱
     *
     * @return true：校验通过，false：校验不通过
     */
    boolean checkEmail(String email);
}
